﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>获取窗口控件 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 获取窗口控件 function returns the control names 遍历 all 控件 in the specified window." />
<meta name="ahk:equiv-v1" content="commands/WinGet.htm#ControlList" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>获取窗口控件</h1>

<p>返回指定窗口中所有控件的名称.</p>

<pre class="Syntax">Controls := <span class="func">获取窗口控件</span>(<span class="optional">WinTitle, WinText, ExcludeTitle, ExcludeText</span>)</pre>

<h2 id="Parameters">参数</h2>
<dl>
    <dt>WinTitle</dt>
    <dd>
        <p>类型: <a href="../Concepts.htm#strings">字符串</a>, <a href="../Concepts.htm#numbers">整数</a>或<a href="../Objects.htm">对象</a></p>
        <p>识别目标窗口的窗口标题或其他条件. 请参阅 <a href="../misc/WinTitle.htm">WinTitle</a>.</p>
    </dd>
    <dt>WinText</dt>
    <dd>
        <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
        <p>如果存在, 此参数必须是目标窗口的单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 如果 <a href="DetectHiddenText.htm">检测隐藏文本</a> 为 ON, 那么会检测隐藏文本元素.</p>
    </dd>
    <dt>ExcludeTitle</dt>
    <dd>
        <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
        <p>标题中含有此参数值的窗口将被排除.</p>
    </dd>
    <dt>ExcludeText</dt>
    <dd>
        <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
        <p>文本中含有此参数值的窗口将被排除.</p>
    </dd>
</dl>

<h2 id="Return_Value">返回值</h2>
<p>类型: <a href="../Concepts.htm#objects">数组</a></p>
<p>此函数返回一个包含指定窗口中所有控件的名称的数组. 每个控件名称由它的类名紧跟着它的序号(ClassNN), 如 Window Spy 所示. 如果没有匹配的窗口, 则返回一个空字符串.</p>
<p>例如, 如果将返回值赋值给名为 <code>Controls</code> 的变量, 并且存在两个控件, 则 <code>Controls[1]</code> 包含第一个控件的名称, <code>Controls[2]</code> 包含第二个控件的名称, 而 <code>Controls.<a href="../objects/Array.htm#Length">Length</a></code> 返回该数字 2.</p>
<p>控件是按照 Z 轴顺序排序的, 如果窗口支持 Tab 键, Z 轴顺序通常与通过 <kbd>Tab</kbd> 键导航的顺序相同.</p>

<h2 id="Error_Handling">错误处理</h2>
<p>如果找不到窗口或在检索控件名称时出错, 则抛出异常.</p>

<h2 id="Remarks">备注</h2>
<p>鼠标光标下的窗口或控件的 ID 可以使用 <a href="MouseGetPos.htm">获取鼠标位置</a> 来获取.</p>
<p>窗口标题和文本是区分大小写的. 除非 <a href="DetectHiddenWindows.htm">检测隐藏窗口</a> 被打开, 否则不会检测隐藏窗口.</p>

<h2 id="Related">相关</h2>
<p><a href="WinGetControlsHwnd.htm">获取窗口控件句柄</a>, <a href="Win.htm">Win 函数</a>, <a href="Control.htm">Control 函数</a></p>

<h2 id="Examples">示例</h2>
<h3 id="ex1">示例 #1</h3>
<p><a href="#ExBasic">#1</a>: 从活动窗口的控件列表中提取每个控件的名称:</p>
<pre>遍历 n, ctrl in 获取窗口控件("A")
{
    Result := 信息框("Control #" n " is '" ctrl "'. 跳过?",, 4)
    如果 (Result = "No")
        跳出
}</pre>
</div>

<div class="ex" id="ExRealTime">
<p><a href="#ExRealTime">#2</a>: 实时显示活动窗口的控件列表:</p>
<pre class="NoIndent">设置定时器 "WatchActiveWindow", 200

WatchActiveWindow()
{
    try
    {
        控件 := 获取窗口控件("A")
        ControlList := ""
        遍历 ClassNN in Controls
            ControlList .= ClassNN . "`n"
        如果 (ControlList = "")
            工具提示 "The active window has no controls."
        否则
            工具提示 ControlList
    }
    捕获
        工具提示 "No visible window is active."
}</pre>
</div>

</body>
</html>